let _debounceTimeout = null;
let	_throttleRunning = false;

export default {
	/**
	 * 防抖
	 * @param {Function} 执行函数
	 * @param {Number} delay 延时ms   
	 */
	debounce(fn, delay=500){
		clearTimeout(_debounceTimeout);
		_debounceTimeout = setTimeout(() => {
			fn();
		}, delay);
	},
	/**
	 * 节流
	 * @param {Function} 执行函数
	 * @param {Number} delay 延时ms  
	 */
	throttle(fn, delay=500){
		if(_throttleRunning){
			return;
		}
		_throttleRunning = true;
		fn();
		setTimeout(() => {
		    _throttleRunning = false;
		}, delay);
	},
	/**
	 * 打开页面
	 * @param {url} 页面路径
	 * @param {type} 打开类型
	 */
	openWindow(url,type='navigateTo'){//
		console.log('push url:'+url);
		switch (type){
			case 'navigateTo':uni.navigateTo({url: url,});break;//打开新页面
			case 'reLaunch':uni.reLaunch({url: url,});break;//关闭所有页面并打开新页面
			case 'redirectTo':uni.redirectTo({url: url,});break;//打开新页面并关闭当前页面
			case 'switchTab':uni.switchTab({url: url,});break;//切换到选项卡页面并关闭非选项卡页面
			default:console.log('错误的跳转方式！');break;
		}
	},	
	/**
	 * 返回上一级页面
	 */
	back(){//
		uni.navigateBack();
	},
	/**
	 * 提示框统一封装
	 * @param {str} 提示文字
	 * @param {icon} 图标
	 * @param {time} 延迟时间默认2秒
	 */
	toast(str, icon='none', time=2000){//
		uni.showToast({
			title: str,
			icon: icon,
			duration: time,
		})
	},
	/**
	 * 获取上一级页面对象
	 */
	opener(){
		let pages = getCurrentPages();//获取当前页面栈实例，数组形式，第一个元素为首页，最后一个元素为当前页面
		let opener = pages[pages.length - 2];
		// #ifdef H5
		return opener;
		// #endif
		return opener.$vm;
	},
	
	
	/**
	 * @param {Object} text 校验是否为空
	 */
	delEmpty(text){
		if(!text || text == 'undefined' || text == 'null'){
			return '';
		}
		return text;
	},
	/**
	 * @param {Object} text 校验是否为空并返回0
	 */
	checkZero(text){
		if(!text || text == 'undefined' || text == 'null'){
			return 0;
		}
		return text;
	},
	
	/**
	 * 全局判断环境
	 */
	os:{
		wechat:function(){
			// #ifdef H5
			var ua = window.navigator.userAgent.toLowerCase();
			if (ua.match(/MicroMessenger/i) == 'micromessenger') {
			    return true;
			}
			return false;
			// #endif
			return false;
		},
		h5:function(){
			// #ifdef H5
				return true;
			// #endif
			return false;
		},
		plus:function(){
			// #ifdef APP-PLUS
				return true;
			// #endif
			return false;
		},
		wxmp:function(){
			// #ifdef MP-WEIXIN
				return true;
			// #endif
			return false;
		},
		mp:function(){
			// #ifdef MP
				return true;
			// #endif
			return false;
		}
	},
	/**
	 * alert提示，不带取消按钮
	 * @param {message} 提示信息
	 * @param {confirm} 回调函数
	 */
	alert(message,confirm){//alert封装
		uni.showModal({
			title:'提示',
			content:message,
			showCancel:false,
			success:function(res){
				if (confirm) confirm();
			}
		})
	},			
	/**
	 * alert提示，有取消按钮
	 * @param {message} 提示信息
	 * @param {confirm} 点击确认的回调函数
	 */
	alertConfirm(message,confirm){
		uni.showModal({
			title:'提示',
			content:message,
			success:function(res){
				if (res.confirm && confirm) {
					confirm();
				}
			}
		})
	},
	previewImage(current = 0,images = [],share = true){//图片预览
		var option = ['保存照片'];
		if(share && this.os.mp()) option.push('发送给朋友');
		
		let urls = [];
		images.forEach((element,index)=>urls.push(element.image));
		uni.previewImage({
			current:current,
			urls: urls,
			longPressActions: {
				itemList: option,
				success:(data) => {
					let image = urls[data.index]
					if(data.tapIndex == 0){
						this.saveImage(image)
					}else if(data.tapIndex == 1){
						this.shareImage(image);
					}
				}
			}
		});
	},
	saveImage(image){
		uni.saveImageToPhotosAlbum({
			filePath: image,
			success:(res) => {
				this.toast('成功了!');
			}
		});
	},
	shareImage(image){
		uni.shareWithSystem({
			type:'image',
			summary: 'Vô cùng->Chờ đợi bạn thử thách',
			imageUrl: image,
			success:()=>{
				this.toast('分享完成!');
			},fail:(e)=>{
				this.toast('分享失败!'+JSON.stringify(e));
			}
		})
	},

	/**
	 * 格式化richtext富文本
	 */
	formatRichText(html,host){
		var regexp = new RegExp('src=\"\/upload\/','g');//不带有域名的地址
		var regex1 = new RegExp("(i?)(\<img)(?!(.*?style=['\"](.*)['\"])[^\>]+\>)","ig");//正则匹配不含style="" 或 style='' 的img标签
		var regex2 = new RegExp("(i?)(\<img.*?style=['\"])([^\>]+\>)","ig");		//正则匹配含有style的img标签
		// 替换html标签
		if(html){
			html = html.replace(regexp, 'src="' + host + '/upload/');
			html = html.replace(regex1, "$2 style=\"\"$3");
			html = html.replace(regex2, "$2display:block;width:100%;height:auto;$3");
			// console.log("html-after----"+html); 
		}
		return html;
	},
	/**
	 * 获取传参
	 */
	getQueryString(name) {
		var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
		var r = window.location.search.substr(1).match(reg);
		if (r != null) {
			return unescape(r[2]);
		}
		return '';
	},
	/**
	 * 跳转事件 传给app监听
	 */
	target(_url) {
		window.location.href = _url;
	},
}